home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NeXTSTEP 3.3 (Developer)…68k, x86, SPARC, PA-RISC]
/
NeXTSTEP 3.3 Dev Intel.iso
/
NextDeveloper
/
Makefiles
/
driverkit
/
Makefile.main_driver
< prev
next >
Wrap
Makefile
|
1994-07-31
|
10KB
|
268 lines
#
# driver.make
#
PRODUCT = $(PRODUCT_ROOT)/$(NAME:.tproj=)
$(PRODUCT_ROOT):
@$(MKDIRS) $(PRODUCT_ROOT)
APP_MAKEFILE_DIR = /NextDeveloper/Makefiles/app
include $(APP_MAKEFILE_DIR)/common.make
KL_LD = /usr/bin/kl_ld
BUILD_NAME=$(NAME:.tproj=)
SERVER_NAME=$(BUILD_NAME:_reloc=)
INSTANCE_VAR=$(SERVER_NAME)_instance
#
# Specify name of load_commands and unload_commands text files for
# kern-loadable module.
#
LOAD_COMMAND_FILE = Load_Commands.sect
LOAD_COMMANDS = -l $(LOAD_COMMAND_FILE)
#
# Options to kl_ld for generating kern-loadable.
#
KL_DEBUG_FLAGS= -d $(SERVER_NAME)_loadable
KL_RELEASE_FLAGS=
CFLAGS = -pipe -Wno-format -nostdinc -I. -I.. -I/NextDeveloper/Headers -I/NextDeveloper/Headers/ansi -I/NextDeveloper/Headers/bsd -DKERNEL -DMACH_USER_API -DKERNEL_SERVER_INSTANCE=$(INSTANCE_VAR)
DEBUG_CFLAGS = $(COMMON_CFLAGS) -DDEBUG -DDDM_DEBUG
-include Makefile.driver_preamble
all:: tool
app:: tool
tool::
@($(MKDIRS) $(SYMROOT) ; \
$(process_target_archs)_obj ; \
$(set_bundle_ext) ; \
if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
language_cflags="" ; \
libs="$(LIBS)" ; \
other_libs="$(OTHER_LIBS)" ; \
else \
language_cflags="-DKANJI" ; \
libs="$(LIBS:lNeXT_s=lNeXTJ_s)" ; \
other_libs="$(OTHER_LIBS:lNeXT_s=lNeXTJ_s)" ; \
fi ; \
$(MAKE) project \
"PRODUCT_ROOT = $(SYMROOT)" \
"PRODUCT = $(SYMROOT)/$(NAME)" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
"LIBS = $$libs" \
"LDFLAGS = $(LDFLAGS) $(KL_RELEASE_FLAGS)" \
"OTHER_LIBS = $$other_libs" \
"APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
debug::
@($(MKDIRS) $(SYMROOT) ; \
$(process_target_archs)_debug_obj ; \
$(set_bundle_ext) ; \
if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
language_cflags="" ; \
libs="$(DEBUG_LIBS)" ; \
other_libs="$(OTHER_DEBUG_LIBS)" ; \
other_japanese_libs="" ; \
else \
language_cflags="-DKANJI" ; \
libs="$(DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
other_libs="$(OTHER_DEBUG_LIBS:lNeXT_s=lNeXTJ_s)" ; \
other_japanese_libs="$(OTHER_JAPANESE_DEBUG_LIBS)" ; \
fi ; \
$(MAKE) project \
"PRODUCT_ROOT = $(SYMROOT)" \
"PRODUCT = $(SYMROOT)/$(NAME)" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"PROJ_CFLAGS = $(DEBUG_CFLAGS) $$language_cflags" \
"LDFLAGS = $(LDFLAGS) $(KL_DEBUG_FLAGS)" \
"LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
"OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
"APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
profile::
@($(MKDIRS) $(SYMROOT) ; \
$(process_target_archs)_profile_obj ; \
$(set_bundle_ext) ; \
if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
language_cflags="" ; \
libs="$(PROF_LIBS)" ; \
other_libs="$(OTHER_PROF_LIBS)" ; \
other_japanese_libs="" ; \
else \
language_cflags="-DKANJI" ; \
libs="$(PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
other_libs="$(OTHER_PROF_LIBS:lNeXT_s=lNeXTJ_s)" ; \
other_japanese_libs="$(OTHER_JAPANESE_PROF_LIBS)" ; \
fi ; \
$(MAKE) project \
"PRODUCT_ROOT = $(SYMROOT)" \
"PRODUCT = $(SYMROOT)/$(NAME)" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"PROJ_CFLAGS = $(PROFILE_CFLAGS) $$language_cflags" \
"LIBS = $$libs" "OTHER_LIBS = $$other_libs" \
"OTHER_JAPANESE_LIBS = $$other_japanese_libs" \
"APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
"BUNDLE_EXTENSION = $$bundle_ext" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" \
"SRCROOT = $(SRCROOT)" \
"OBJROOT = $(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" )
depend:: Makefile.dependencies $(SUBPROJECTS:.subproj=.depend) # Note: tools can not have bundles.
project:: $(INITIAL_TARGETS) toplevel_subcomponents resources $(PRODUCT)
# Tools can have no bundles; there's no ".tool" wrapper to store it in
toplevel_subcomponents:: $(PRODUCT_ROOT) subprojs # bundles
-@($(RM) -f $(PRODUCT_ROOT)/$(CHANGES_FILE) ; \
$(ECHO) "$(OFILE_DIR)" > $(PRODUCT_ROOT)/$(CHANGES_FILE))
$(PRODUCT): $(PRODUCT_DEPENDS) $(OTHER_PRODUCT_DEPENDS) $(INSTANCE_VAR).o
@(adaptors="" ; \
for adaptor in $(OTHERRELOCATABLES) none ; do \
if [ $$adaptor = "none" ] ; then break; fi ; \
for path in $(ADAPTOR_SEARCH_PATH) none ; do \
if [ $$path = "none" ] ; then break; fi ;\
if [ -r $$path/$$adaptor ] ; then \
adaptors="$$adaptors $$path/$$adaptor" ; \
break ; \
fi ; \
done ; \
done ; \
if [ "`$(ECHO) $(OFILES) $(OTHER_OFILES) | wc -w`" != " 0" ] ; then \
if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
other_japanese_libs=""; \
else \
other_japanese_libs="$(OTHER_JAPANESE_LIBS)" ; \
fi ; \
cmd="$(KL_LD) $(OBJCFLAG) $(LDFLAGS) $(OTHER_LDFLAGS) \
-o $(PRODUCT) $(OFILES) $(OTHER_OFILES) $(INSTANCE_VAR).o \
$$adaptors $$other_japanese_libs $(OTHER_LIBS) $(LIBS) \
-n $(SERVER_NAME) $(LOAD_COMMANDS) $(UNLOAD_COMMANDS) -i $(INSTANCE_VAR)";\
echo $$cmd ; \
$$cmd ; \
fi )
$(DSTROOT)$(INSTALLDIR) $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR):
$(MKDIRS) $@
strip_myself::
$(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)/$(PARENT_DIR)/$(NAME)
before_install:: $(DSTROOT)$(INSTALLDIR)
$(RM) -rf $(DSTROOT)$(INSTALLDIR)/$(NAME)
after_install::
installhdrs:: $(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR)
@if [ -n "${COMMON_PUBLIC_HFILES}" ]; \
then \
install -c -u -m 444 $(COMMON_PUBLIC_HFILES) \
$(DSTROOT)$(PUBLIC_INSTALL_HDR_DIR); \
fi
install:: tool before_install installhdrs $(OTHER_INSTALL_DEPENDS)
(cd $(SYMROOT); $(TAR) chf - $(NAME)) | (cd $(DSTROOT)$(INSTALLDIR); $(TAR) xf -)
$(STRIP) $(RELOCATABLE_STRIP_OPTS) $(DSTROOT)$(INSTALLDIR)/$(NAME)
-$(CHOWN) -Rf $(INSTALL_AS_USER).$(INSTALL_AS_GROUP) \
$(DSTROOT)$(INSTALLDIR)/$(NAME)
-$(CHMOD) -Rf go-w $(DSTROOT)$(INSTALLDIR)/$(NAME)
@(if [ "$(INSTALL_PERMISSIONS)" != "" ] ; then \
$(ECHO) $(CHMOD) -f $(INSTALL_PERMISSIONS) \
$(DSTROOT)$(INSTALLDIR)/$(NAME); \
$(CHMOD) -f $(INSTALL_PERMISSIONS) \
$(DSTROOT)$(INSTALLDIR)/$(NAME); \
fi)
@($(process_target_archs)_obj ; \
if [ "$(ENGLISH)" = "YES" -o "$(JAPANESE)" != "YES" ] ; then \
language_cflags="" ; \
else \
language_cflags="-DKANJI" ; \
fi ; \
$(MAKE) after_install "DSTROOT=$(DSTROOT)" \
"OBJROOT=$(OBJROOT)" \
"SYMROOT = $(SYMROOT)/sym" \
"SYM_DIR = $(SYMROOT)/sym" \
"PRODUCT_ROOT = $(PRODUCT_ROOT)" \
"PRODUCT = $(PRODUCT_ROOT)/$(NAME)" \
"OFILE_DIR = $(OBJROOT)/$$obj_dir" \
"PROJ_CFLAGS = $(NORMAL_CFLAGS) $$language_cflags" \
"APP_MAKEFILE_DIR = $(APP_MAKEFILE_DIR)" \
"RC_CFLAGS = $$arch_cflags" \
"RC_ARCHS = $$archs" )
#
# Make the global instance
#
$(INSTANCE_VAR).m:
@echo Creating $(INSTANCE_VAR).m; \
echo "#import <driverkit/IODevice.h>\n#import <kernserv/kern_server_types.h>\n\nkern_server_t $(INSTANCE_VAR);\n\n@interface $(SERVER_NAME)KernelServerInstance : Object\n{}\n+ (kern_server_t *)kernelServerInstance;\n@end\n\n@implementation $(SERVER_NAME)KernelServerInstance\n+ (kern_server_t *)kernelServerInstance\n{\n\treturn &$(INSTANCE_VAR);\n}\n@end\n\n@interface $(SERVER_NAME)Version : IODevice\n{}\n+ (int)driverKitVersionFor$(SERVER_NAME);\n@end\n\n@implementation $(SERVER_NAME)Version\n+ (int)driverKitVersionFor$(SERVER_NAME)\n{\n\treturn IO_DRIVERKIT_VERSION;\n}\n@end\n" > $(OFILE_DIR)/$@
#.DEFAULT
help:
@if (test "$<"); then \
$(ECHO) 'ERROR: Unrecognized Makefile target "$<"'; \
fi
@$(ECHO) 'The following targets are available:'
@$(ECHO)
@$(ECHO) ' all Makes the tool target (below). This is the default target.'
@$(ECHO)
@$(ECHO) ' tool Compiles and links an optimized (and debuggable) version of the'
@$(ECHO) ' project, ready to install, into <ProjectName>.'
@$(ECHO)
@$(ECHO) ' debug Compiles (with all warnings and -DDEBUG on) and links a '
@$(ECHO) ' fully-debuggable version of the project into a <ProjectName>_d.'
@$(ECHO)
@$(ECHO) ' profile Compiles (with all warnings and -DPROFILE on) and links a'
@$(ECHO) ' version of the project into <ProjectName>_p'
@$(ECHO) ' that will, when run, generate a gprof report.'
@$(ECHO)
@$(ECHO) ' depend Generates an optional Makefile.dependencies file for every level'
@$(ECHO) ' of the project to reflect the complete dependency graph'
@$(ECHO) ' (including headers).'
@$(ECHO)
@$(ECHO) ' install Builds (if needed) and copies <ProjectName> into the'
@$(ECHO) ' installation directory, setting permissions and owners as'
@$(ECHO) ' appropriate.'
@$(ECHO)
@$(ECHO) ' installsrc Installs the source files for the project into the directory'
@$(ECHO) ' specified in the SRCROOT variable in a command-line argument.'
@$(ECHO) ' Note: the target directory will be removed and recreated.'
@$(ECHO)
@$(ECHO) ' installhdrs Installs the source files for the project.'
@$(ECHO)
@$(ECHO) ' clean Removes all files in the project derived from previous builds.'
@$(ECHO)
@$(ECHO) ' help Lists these targets with their descriptions.'
@$(ECHO)
@$(ECHO) 'For more details, see the comments in /NextDeveloper/Makefiles/app/*.make.'